package com.chinaisafe.user.service;

import com.chinaisafe.gateway.client.auth.feign.UaaApi;
import com.chinaisafe.user.vo.request.*;
import com.chinaisafe.user.vo.response.LoginRespVO;
import com.chinaisafe.user.vo.response.UserInfoRespVO;

/**
 * UserLoginService
 * Description：
 *
 * @author xuefu.shu
 * @date 2024-07-12 16:33
 */
public interface UserLoginService extends UaaApi {


    /**
     * 获取验证码
     *
     * @param captChaReqVO 验证码请求参数
     * @return String 验证码
     * @author xuefu.shu
     * @date 2024-07-12 09:55:54
     */
    String captcha(UserCaptChaReqVO captChaReqVO);

    /**
     * 发送验证码
     *
     * @param smsCodeReqVO 发送验证码请求参数
     * @return String 验证码
     * @author xuefu.shu
     * @date 2024-07-12 09:55:54
     */
    String sendVerificationCode(SendMobileSmsCodeReqVO smsCodeReqVO);

    /**
     * 手机号登录
     *
     * @param mobileReqVO 手机号登录请求参数
     * @return LoginRespVO 登录响应参数
     * @author xuefu.shu
     * @date 2024-07-12 09:55:54
     */
    LoginRespVO mobileLogin(LoginMobileReqVO mobileReqVO);

    /**
     * 账号登录
     * @param accountReqVO
     * @return LoginRespVO 登录响应参数
     * @author xuefu.shu
     * @date 2024-07-12 14:53
     */
    LoginRespVO accountLogin(LoginAccountReqVO accountReqVO);


    /**
     * 退出登录
     * @return
     * @author xuefu.shu
     * @date 2024-07-13 14:12
     */
    String loginOut();

    /**
     * 切换租户
     * @param tenantReqVO
     * @return LoginRespVO
     * @author xuefu.shu
     * @date 2024-07-15 13:42
     */
    LoginRespVO loginTenant(LoginTenantReqVO tenantReqVO);

    /**
     * 获取用户信息
     * @return UserInfoRespVO
     * @author xuefu.shu
     * @date 2024-07-15 13:42
     */
    UserInfoRespVO getUserInfo();
}
